Gelung Aliran kawalan

Gelung (loop) ialah urutan pernyataan yang dinyatakan sekali tetapi boleh dijalankan beberapa kali berturut-turut. Kod "di dalam" gelung (badan gelung, ditunjukkan di bawah sebagai xxx) dipatuhi beberapa kali tertentu, atau sekali untuk setiap koleksi item, atau sehingga beberapa syarat dipenuhi, atau selama-lamanya.

Dalam bahasa pengaturcaraan kefungsian seperti Haskell dan Scheme, gelung boleh dinyatakan dengan menggunakan rekursi atau lelaran titik tetap dan bukannya binaan gelung eksplisit. Rekursi ekor ialah kes pengulangan khas yang boleh diubah dengan mudah menjadi lelaran.

Gelung dikawal kiraan

Kebanyakan bahasa pengaturcaraan mempunyai pembinaan untuk mengulang gelung beberapa kali. Dalam kebanyakan kes, pengiraan boleh pergi ke bawah dan bukannya ke atas dan saiz langkah selain daripada 1 boleh digunakan.

   FOR I = 1 TO N           | for I := 1 to N do begin       xxx                  |     xxx   NEXT I                   | end;------------------------------------------------------------   DO I = 1,N               | for ( I=1; I<=N; ++I ) {       xxx                  |     xxx   END DO                   | }

Dalam contoh ini, jika N < 1, maka badan gelung boleh dilaksanakan sekali (dengan saya mempunyai nilai 1) atau tidak sama sekali, bergantung pada bahasa pengaturcaraan.

Dalam banyak bahasa pengaturcaraan, hanya integer boleh digunakan dengan pasti dalam gelung dikawal kiraan. Nombor titik terapung diwakili secara tidak tepat disebabkan oleh kekangan perkakasan, jadi gelung seperti</br>

   for X := 0.1 step 0.1 to 1.0 do

mungkin diulang 9 atau 10 kali, bergantung pada ralat pembundaran dan/atau perkakasan dan/atau versi pengkompil. Tambahan pula, jika kenaikan X berlaku dengan penambahan berulang, ralat pembundaran terkumpul mungkin bermakna bahawa nilai X dalam setiap lelaran boleh berbeza dengan agak ketara daripada urutan jangkaan 0.1, 0.2, 0.3, ..., 1.0.

Gelung dikawal keadaan

Kebanyakan bahasa pengaturcaraan mempunyai pembinaan untuk mengulang gelung sehingga beberapa keadaan berubah. Beberapa variasi menguji keadaan pada permulaan gelung; yang lain mengujinya pada akhirnya. Jika ujian adalah pada permulaan, badan mungkin dilangkau sepenuhnya; jika ia di akhir, badan sentiasa dilaksanakan sekurang-kurangnya sekali.

   DO WHILE (test)          | repeat        xxx                  |     xxx    LOOP                     | until test;----------------------------------------------   while (test) {           | do       xxx                  |     xxx   }                        | while (test);

Satu pemutus kawalan ialah kaedah pengesanan perubahan nilai yang digunakan dalam gelung biasa untuk mencetuskan pemprosesan bagi kumpulan nilai. Nilai dipantau dalam gelung dan perubahan mengalihkan aliran program kepada pengendalian acara kumpulan yang dikaitkan dengannya.

   DO UNTIL (End-of-File)      IF new-zipcode <> current-zipcode         display_tally(current-zipcode, zipcount)                  current-zipcode = new-zipcode         zipcount = 0      ENDIF            zipcount++   LOOP

Gelung dikawal koleksi

Sebilangan bahasa pengaturcaraan (seperti Ada, D, C++11, Smalltalk, PHP, Perl, Object Pascal, Java, C#, MATLAB, Visual Basic, Ruby, Python, JavaScript, Fortran 95 dan lebih baru) mempunyai binaan khas yang membenarkan tersirat menggelung melalui semua elemen tatasusunan, atau semua ahli set atau koleksi.

   someCollection do: [:eachElement |xxx].
   for Item in Collection do begin xxx end;   foreach (item; myCollection) { xxx }   foreach someArray { xxx }   foreach ($someArray as $k => $v) { xxx }   Collection<String> coll; for (String s : coll) {}   foreach (string s in myStringCollection) { xxx }   someCollection | ForEach-Object { $_ }
   forall ( index = first:last:step... )

Scala mempunyai ekspresi for yang menyamaratakan gelung terkawal koleksi, dan juga menyokong kegunaan lain, seperti pengaturcaraan tak segerak. Haskell mempunyai eskpresi dan pemahaman do, yang bersama-sama menyediakan fungsi yang serupa dengan ungkapan for dalam Scala.

Gelung tak terhingga

Gelung tak terhingga digunakan untuk memastikan gelung segmen program berlaku selama-lamanya atau sehingga keadaan khas timbul seperti ralat. Sebagai contoh, atur cara dipacu peristiwa (seperti dalampelayan) harus bergelung selama-lamanya, mengendalikan peristiwa semasa ia berlaku, dan hanya berhenti apabila proses ditamatkan oleh pengendali.

Selalunya, gelung tak terhingga tercipta secara tidak sengaja oleh ralat pengaturcaraan dalam gelung dikawal keadaan, di mana keadaan gelung menggunakan pemboleh ubah dengan nilai yang tidak pernah berubah dalam gelung.